<?php

/**
 * 接口统一返回函数

 * @param $code
 * @param $data
 * @param $msg
 * @return \Illuminate\Http\JsonResponse
 */
 function respondWithData($code,$data,$msg)
{
    return response()->json(['code'=>$code,'data'=>$data,'msg'=>$msg]);
}


/**
 * 对象转json
 * @param $obj
 * @return mixed
 */
function objectToArray($obj)
{
    $rt=json_encode($obj);
    return json_decode($rt,true);
}

/**
 * 处理成树形结构数据
 * @param array $list  未处理列表
 * @param string $pk  主键名
 * @param string $pid  关联上级主键名
 * @param string $child  下级文件键名
 * @param int $root  一级主键参数
 * @return array
 */
 function generateTree($list, $pk = 'id', $pid = 'pid', $child = 'list', $root = 0)
{
    $tree = array();
    $packData = array();
    foreach ($list as $data) {
        $packData[$data[$pk]] = $data;
    }
    foreach ($packData as $key => $val) {
        if ($val[$pid] == $root) {
            $tree[] = &$packData[$key]; // 代表根节点
        } else {
            $packData[$val[$pid]][$child][] = &$packData[$key]; // 找到其父类
        }
    }
    return $tree;
}




/**
 * 树结构数据转数组（拉平树结构，保留上下级排序）
 * @param $arr
 * @param $pid
 * @return array
 */
function treeToList($arr, $pid = 0)
{
    $array = array();
    foreach ($arr as $val) {
        $inData =$val;
        unset($inData['list']);
        $array[] = $inData;
        if (isset($val["list"])) {
            $children = treeToList($val["list"], $val["pid"]);
            if ($children) {
                $array = array_merge($array, $children);
            }
        }
    }
    return $array;
}


